﻿//using System;
//using System.Collections.Generic;
//using System.Linq;
//using System.Security.Claims;
//using System.Text;
//using System.Threading;
//using System.Threading.Tasks;
//using FubarDev.FtpServer;
//using FubarDev.FtpServer.AccountManagement;
//using FubarDev.FtpServer.FileSystem.DotNet;
//using ATEGo;
//using Microsoft.Extensions.DependencyInjection;

//namespace External
//{
//    /// <summary>
//    /// FTP服务器Server
//    /// 底层调用FubarDev库
//    /// </summary>
//    public class FTPServer
//    {
//        /// <summary>
//        /// 账户名
//        /// </summary>
//        public static string UserName { get; set; }
//        /// <summary>
//        /// 密码
//        /// </summary>
//        public static string Password { get; set; }
//        /// <summary>
//        /// 路径
//        /// </summary>
//        public static string DirPath { get; set; }
//        /// <summary>
//        /// 服务器IP地址
//        /// </summary>
//        public static string ServerIP { get; set; } = "127.0.0.1";
//        /// <summary>
//        /// 服务器端口
//        /// </summary>
//        public static int ServerPort { get; set; } = 21;

//        public FTPServer()
//        {
//            //Initial_WLAN();
//        }

//        public FTPServer(string username, string password, string dirpath, string serverip)
//        {
//            UserName = username;
//            Password = password;
//            DirPath = dirpath;
//            ServerIP = serverip;
//        }
//        public void Initial_WLAN()
//        {
//            UserName = "1";
//            Password = "1";
//            DirPath = @"D:\\Hangs\\Package\\B853";
//            ServerIP = "127.0.0.1";
//        }

//        IFtpServerHost ftpServerHost;

//        /// <summary>
//        /// 用户名、密码验证
//        /// </summary>
//        public class TestMembershipProvider : IMembershipProvider
//        {

//            public Task<MemberValidationResult> ValidateUserAsync(string username, string password)
//            {
//                if (username == UserName && password == Password)
//                {
//                    var identity = new ClaimsIdentity();
//                    identity.AddClaim(new Claim(ClaimTypes.Name, username));
//                    identity.AddClaim(new Claim(ClaimTypes.Role, "admin"));
//                    return Task.FromResult(new MemberValidationResult(MemberValidationStatus.AuthenticatedUser, new ClaimsPrincipal(identity)));
//                }
//                return Task.FromResult(new MemberValidationResult(MemberValidationStatus.InvalidLogin));
//            }


//        }
//        /// <summary>
//        /// 打开服务器
//        /// </summary>
//        /// <returns></returns>
//        public async Task Open()
//        {
//            // 设置依赖项注入
//            var services = new ServiceCollection();

//            // FtpServer根文件夹
//            services.Configure<DotNetFileSystemOptions>(opt => opt.RootPath = DirPath);

//            // 添加FTP服务器服务
//            services.AddFtpServer(builder =>
//            {
//                builder.UseDotNetFileSystem(); // 使用.NET文件系统功能
//                //builder.EnableAnonymousAuthentication();// 允许匿名登录
//                builder.Services.AddSingleton<IMembershipProvider, TestMembershipProvider>();//用户登录
//            });

//            // 配置FTP服务器
//            services.Configure<FtpServerOptions>(
//                opt =>
//                {
//                    opt.ServerAddress = ServerIP;
//                    opt.Port = ServerPort;
//                });

//            // 构建服务提供商
//            var serviceProvider = services.BuildServiceProvider();

//            // 初始化FTP服务器
//            ftpServerHost = serviceProvider.GetRequiredService<IFtpServerHost>();

//            // 启动FTP服务器
//            await ftpServerHost.StartAsync(CancellationToken.None);
//        }
//        /// <summary>
//        /// 停止FTP服务
//        /// </summary>
//        /// <returns></returns>
//        public async Task Close()
//        {
//            try
//            {
//                await ftpServerHost.StopAsync(CancellationToken.None);
//            }
//            catch (Exception e)
//            {
//                MsgShow.Error(e.Message);
//            }
            
//        }


//    }

//}
